package com.my.springboot.tuling.jvm.gc;

/**
 * 垃圾回收
 * -XX:+UseAdaptiveSizePolicy(默认开启)，会导致这个8:1:1比例自动变化，
 *
 * 结论：大对象直接进入老年代，因为给allocation2分配内存的时候eden区内存几乎已经被分配完了，
 * 当Eden区没有足够空间进行分配时，虚拟机将发起一次Minor GC，GC期间虚拟机又发现allocation1无法存入
 * Survior空间，所以只好把新生代的对象提前转移到老年代中去，老年代上的空间足够存放allocation1，所以不会出现
 * Full GC。执行Minor GC后，后面分配的对象如果能够存在eden区的话，还是会在eden区分配内存
 */
public class GcTest {

    public static void main(String[] args) {
        //添加运行JVM参数： -XX:+PrintGCDetails
        byte[] allocation1 ,allocation2 ,allocation3;/*,allocation4,allocation5,allocation6;*/
        allocation1 = new byte[60000*1024];
        allocation2 = new byte[60000*1024];
        allocation3 = new byte[60000*1024];
        /*allocation4 = new byte[60000*1024];
        allocation5 = new byte[60000*1024];
        allocation6 = new byte[60000*1024];*/

    }
}
